/**
 * @author admin
 * 剑指 Offer11 15. 二进制中1的个数
 * 解题思路：按位与，如6 & 5，结果为4，即110和101的按位与结果为100，观察可得规律每一次按位与都会少一个1，所以几次按位与就说明有几个1.
 */
public class Offer15 {

    public int hammingWeight(int n) {
//        return Integer.bitCount(n);
        int res = 0;
        while (n != 0) {
            n &= n - 1;
            res++;
        }
        return res;
    }

    public static void main(String[] args) {
        System.out.println(Integer.bitCount(00000000000000000000000000001011));
    }
}
